package com.culturalCenter.dataCenter.service.passengerflow;

import com.culturalCenter.dataCenter.customEntity.requestParam.PassengerFlowRequestParam;
import com.culturalCenter.dataCenter.customEntity.responseParam.passengerflow.*;
import com.culturalCenter.dataCenter.vo.PassengerFlowVo;
import com.dahuatech.icc.exception.ClientException;

import java.util.List;
import java.util.Map;

/**
 * @Author zhao
 * @Date 2020/12/14 9:37
 */
public interface PassengerFlowPopulationService {

    /**
     * 获取首页客流数据
     *
     * @param userId
     * @param userName
     * @param token
     * @param param
     * @param timeType
     *         （值可为：hour、day、month、year）
     *
     * @return
     */
    PassengerFlowIndexResponse getIndexDate(String userId,
                                            String userName,
                                            String token, String searchKey,
                                            PassengerFlowRequestParam param,
                                            String timeType) throws Exception;

    /**
     * 实时人数统计
     *
     * @param userId
     * @param userName
     * @param token
     * @param param
     * @param timeType
     *         （值可为：hour、day、month、year）
     *
     * @return
     */
    List<PassengerFlowPopulationResponse> getRealTimeData(String userId,
                                                          String userName,
                                                          String token,
                                                          PassengerFlowRequestParam param,
                                                          String timeType) throws Exception;

    /**
     * 进出人数统计
     *
     * @param userId
     * @param userName
     * @param token
     * @param param
     * @param timeType
     *         （值可为：hour、day、month、year）
     *
     * @return
     */
    Map<String, List<PassengerFlowPopulationResponse>> getInAndOutData(String userId,
                                                                       String userName,
                                                                       String token,
                                                                       PassengerFlowRequestParam param,
                                                                       String timeType) throws Exception;

    /**
     * 查询区域编码、区域类型、区域名称、当前时刻实时人数信息
     *
     * @param userId
     * @param userName
     * @param token
     * @param searchKey
     *
     * @return
     */
    List<PassengerFlowRemainderResponse> getNowTimePopulation(String userId,
                                                              String userName,
                                                              String token,
                                                              String searchKey) throws Exception;

    /**
     * 查询人员身份、部门信息
     *
     * @param userId
     * @param userName
     * @param token
     * @param id
     *
     * @return
     */
    List<PassengerFlowIdentityInfoResponse> getIdentityAndDepartment(String userId,
                                                                     String userName,
                                                                     String token,
                                                                     long id) throws Exception;

    /**
     * 首页_客流报表
     *
     * @param param
     *
     * @return
     */
    List<PassengerFlowPopulationResponse> getReport(PassengerFlowRequestParam param) throws ClientException;

    /**
     * 查询所有区域
     *
     * @param searchKey
     *
     * @return
     */
    List<PassengerFlowRemainderResponse> getAllRegions(String searchKey) throws ClientException;

    /**
     * 查询今日总客流数、在场总人数
     *
     * @return
     */
    List<PassengerFlowRemainderResponse> getTotalPopulation() throws ClientException;

    /**
     * 大数据中心展示_区域信息
     *
     * @return
     */
    List<PassengerFlowAreaInfoResponse> getAreaInfo() throws ClientException;


    List<PassengerFlowVo> getCurrentMonthReport(String tyep);
}
